import {reqRegister,reqLogin} from '../api/index'
import {
    AUTH_SUCCESS,
    ERROR_MSG,
    RECEIVE_USER,
    RESET_USER,
    RECEIVE_USER_LIST,
    RECEIVE_MSG_LIST,
    RECEIVE_MSG,
    MSG_READ
} from './action-types'

// 授权成功的同步action
const authSuccess=(user)=>{
    return {type:AUTH_SUCCESS,data:user}
}
// 错误提示信息的同步action
const errorMsg=(msg)=>{
    return {type:ERROR_MSG,data:msg}
}

//同步action，就是指action的值为Object类型的一般对象 如下：
//export const createIncrementAction = data => ({type:INCREMENT,data})
//异步action，就是指action的值为函数,异步action中一般都会调用同步action，异步action不是必须要用的。
// 注册异步action
export const register=(user)=>{
    const {username, password, password2, type} = user

    //原型：(dispatch)=>{}
    return async(dispatch)=>{
        // 表单数据合法, 返回一个发ajax请求的异步action函数
        if(!username) {
            dispatch(errorMsg('用户名不能为空！'))
        }else if(password!==password2) {
            dispatch(errorMsg('您两次输入的密码不一致！'))
        }else {
            // 发送注册的异步ajax请求
            /*const promise = reqRegister(user)
            promise.then(response => {
              const result = response.data  // {code: 0/1, data: user, msg: ''}
            })*/
            const response= await reqRegister({username, password, type})
            const result = response.data //  {code: 0/1, data: user, msg: ''}
            if(result.code===0) {// 成功
                // 分发授权成功的同步action  传入user对象
                dispatch(authSuccess(result.data))
            }else {
                // 分发错误提示信息的同步action
                dispatch(errorMsg(result.msg))
            }
        }

    }
}
// 登录异步action
export const login=(user)=>{
    const {username, password,} = user

    // 表单数据合法, 返回一个发ajax请求的异步action函数
    //原型：(dispatch)=>{}
    return async(dispatch)=>{
        // 发送注册的异步ajax请求
        /*const promise = reqRegister(user)
        promise.then(response => {
          const result = response.data  // {code: 0/1, data: user, msg: ''}
        })*/
      const response= await reqLogin({username, password})
        const result = response.data //  {code: 0/1, data: user, msg: ''}
        if(result.code===0) {// 成功
            // 分发授权成功的同步action  传入user对象
            dispatch(authSuccess(result.data))
        }else {
            // 分发错误提示信息的同步action
            dispatch(errorMsg(result.msg))
        }
    }
}


